]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
portalHelper: Enable WebKit sandbox if available
authorMichael Catanzaro <mcatanzaro@gnome.org>
Wed, 5 Feb 2020 22:18:11 +0000 (22:18 +0000)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 6 Feb 2020 17:28:40 +0000 (18:28 +0100)
The portal helper is rather sensitive because potentially-hostile Wi-Fi
networks can decide to launch it whenever they want (by blocking the
user's connection to the nmcheck domain) and load whatever web content
they want into it. So having this unsandboxed is really extraordinarily
risky. Previously it was a risk we had to accept, because WebKit did not
have a web process sandbox, but now it does. So let's bubblewrap all the
things!

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/983

js/portalHelper/main.js

index b0e568dacb5a1cbd9b08eeeda5a882c404c743f3..88adc1b8dfa334c975bf117d135a91f4a5ca8aeb 100644 (file)
@@ -118,6 +118,10 @@ class PortalWindow extends Gtk.ApplicationWindow {
         this._webContext = WebKit.WebContext.new_ephemeral();
         this._webContext.set_cache_model(WebKit.CacheModel.DOCUMENT_VIEWER);
         this._webContext.set_network_proxy_settings(WebKit.NetworkProxyMode.NO_PROXY, null);
+        if (this._webContext.set_sandbox_enabled) {
+            // We have WebKitGTK 2.26 or newer.
+            this._webContext.set_sandbox_enabled(true);
+        }
 
         this._webView = WebKit.WebView.new_with_context(this._webContext);
         this._webView.connect('decide-policy', this._onDecidePolicy.bind(this));